﻿using System;
using System.Collections.Generic;
using Excepciones;
using MJD.Comunes.Entidades;
using MJD.Transaccional.AccesoDatos.Interfaces;
using NHibernate;
using Recursos;

namespace MJD.Transaccional.AccesoDatos.Implementacion.NHibernateMySql
{
    /// <summary>
    /// Clase que implementa los metodos que se declaran en IDaoCiudad
    /// </summary>
    public class DaoCiudad:DaoBase<Ciudad>,IDaoCiudad 
    {
        /// <summary> Metodo que consulta todas las ciudades de un estado dado </summary>
        /// <param name="estado">datos del estado a consultar las ciudades</param>
        /// <returns>lista de ciudades que pertenece al estado</returns>
        public IList<Ciudad> ConsultarPorEstado(Estado estado)
        {
            IList<Ciudad> listaEntidad;
            try
            {
                string consulta = string.Format(
                    ConsultasHQL.ConsultarCiudadPorEstado, estado.Id);
                IQuery query = Session.CreateQuery(consulta);
                listaEntidad = query.List<Ciudad>();
            }
            catch (Exception e)
            {
                throw new ExcepcionInfoObtenerTodos(
                    string.Format(RecursoDAO.errObtenerTodosEntidad,
                    (typeof(Ciudad)).Name), e);
            }
            return listaEntidad;
        }


    }
}
